/*
 * Copyright (c) 2003 Frank Sauer. All rights reserved.
 *
 * Licenced under CPL 1.0 (Common Public License Version 1.0).
 * The licence is available at http://www.eclipse.org/legal/cpl-v10.html.
 *
 *
 * DISCLAIMER OF WARRANTIES AND LIABILITY:
 *
 * THE SOFTWARE IS PROVIDED "AS IS".  THE AUTHOR MAKES  NO REPRESENTATIONS OR WARRANTIES,
 * EITHER EXPRESS OR IMPLIED.  TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL THE
 * AUTHOR  BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION, LOST REVENUE,  PROFITS
 * OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL  OR PUNITIVE DAMAGES,
 * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF  LIABILITY, ARISING OUT OF OR RELATED TO
 * ANY FURNISHING, PRACTICING, MODIFYING OR ANY USE OF THE SOFTWARE, EVEN IF THE AUTHOR
 * HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 *
 * $id$
 */
package net.sourceforge.metrics.internal.xml;

import net.sourceforge.metrics.core.sources.AbstractMetricSource;

import org.eclipse.core.runtime.IProgressMonitor;

/**
 * @author Frank Sauer
 */
public interface IXMLExporter {

	static final IXMLExporter PROJECT_EXPORTER = new ProjectXMLExporter();
	static final IXMLExporter PACKAGEROOT_EXPORTER = new PackageRootXMLExporter();
	static final IXMLExporter PACKAGEFRAGMENT_EXPORTER = new PackageFragmentXMLExporter();
	static final IXMLExporter COMPILATIONUNIT_EXPORTER = new CompilationUnitXMLExporter();
	static final IXMLExporter TYPE_EXPORTER = new TypeXMLExporter();
	static final IXMLExporter METHOD_EXPORTER = new MethodXMLExporter();

	void export(AbstractMetricSource source, XMLPrintStream out, int level, IProgressMonitor monitor);

	String getTagName();
}
